About ExSan

About E x S a n
° I am not afraid of pointers ° Output

ExSan is a console-oriented worksheet tool coded in C++11 that dynamically allocates memory during runtime. It can be utilized for a wide range of applications, including data mining, blockchain, quantitative finance (such as quantitative analysis, high-frequency trading, and low-latency trading, financial derivatives pricing, portfolio management, forex), image processing, text mining, pattern recognition, digital forensics (audio, image, and video), artificial intelligence, and numerical computing.
As a C/C++ developer/programmer, I am seeking job opportunities.(0)

ExSan application in Quant Finance


Analyzing the data market is much easier in a dynamically declared environment. Since the market is essentially stochastic, any code used for analysis should be flexible and capable of adapting to the dynamics and eventualities of the market. 

ExSan provides full dynamic memory allocation, making it suitable for studying any scenario in the data market. It is generally advisable to avoid using code with variables declared as static in quantitative finance, as this can limit the flexibility and adaptability of the code.



I conceived and developed a software tool named ExSan, which consists of over 100K lines of C++ source code. ExSan is a console-oriented spreadsheet tool written in C++ and is similar in functionality to Excel or MATLAB. It uses a novel data structure to handle large datasets. Thijs van den Berg, Managing Director of SITMO Consultancy B.V. in the Netherlands, noticed my product on the website www.wilmott.com and commented in the forum:


'ExSan wrote his own version of MATLAB from scratch!'

If you are interested in this product or require my programming services, please feel free to contact me(0) at your earliest convenience. I would be happy to discuss your needs and provide any assistance I can. Thank you for considering my services.


Software Engineering for ExSan

ExSan uses linked lists and red-black trees to create a unique abstract data structure



The core element of this unique abstract data structure is the ExSan(i, j) node, which appears as shown in the following image
and the corresponding code:



The ExSan abstract data structure is a complex matrix array of fully interconnected nodes, which utilizes the Red-Black Tree as the underlying platform. The ExSan code incorporates a single, customized implementation of the Red-Black Tree data structure, which has been designed to provide the necessary functionality for the ExSan network. This implementation has been coded only once.

This is how an ExSan abstract data structure is built.

NETPTR red(nullptr); // n: rows m: cols net = net->exsan(n, m) //C++

n link lists are created, each one of them with m nodes


Make the entire network fully interconnected.
The network is set up when all rows and columns become circular linked lists


Because the network is fully interconnected, the main pointer -ExSan ptr- can access nodes in the corners of this unique abstract data structure in constant time Ο(1).
Moreover, the central node of the network is also reachable in constant time Ο(1), because the ExSan Abstract Data Structure relies on the Red-Black Tree, where the central node of the network becomes the root of the binary tree


Because ExSan's abstract data structure uses circular linked lists, the abstract visualization of ExSan could be represented as a geodesic cylinder that can be oriented either vertically or horizontally.

Alternatively, the network can be visualized as a balloon that can dynamically resize based on the computational demand of a program using the ExSan tool. In either case, the shape of the visualization is designed to reflect the underlying structure of the ExSan network, with each node represented as a distinct point in space, and connections between nodes represented as lines or arcs.


Because of the linked list, the main pointer in ExSan has direct access to both the first and last elements.


The ExSan abstract data structure is built using a Red-Black tree as its lower layer. In this structure, the central node of the linked list serves as the root of the binary tree and can be directly accessed.

In terms of accessibility, the central node and the corner nodes are accessible in constant time, denoted O(1), because they can be accessed directly without any traversal through other nodes. However reaching other nodes may require multiple transitions or hops and the maximum number of hops required is bounded by h <= 2xlog2(n + 1), where n is the total number of nodes in the structure.


Therefore, the nodes located at the edges and in the center of the Abstract Data Structure are accessed with the same computational time of order (1).

As a result, in a large layout with multiple rows and columns, nodes located near the center and edges of the ExSan(rows, cols) abstract data structure can be accessed with minimal transitions, while only a few internal nodes may require a maximum of 2*log2(n+1) transitions, which is equivalent to the height of the Red-Black tree.

ExSan has implemented an improved search algorithm that utilizes binary selection to locate the key being searched for. This algorithm starts at the root of the tree, avoiding the need to traverse the entire tree. The maximum number of transitions is equivalent to the height 'h' of the Red-Black Tree.

In a mesh ExSan with dimensions of 1024 rows and 1024 columns, it will take at most 10 + 10 = 20 transitions to reach the farthest cell. The code to achieve efficient access to internal nodes(cells) is detailed in the following.

     1 /***********START***************/

     2 //ok goto using rb tree is implemented

     3 PTR Net::go_to_row(Net* net, unsigned short row) {

     4    static ROWPTR aux;

     5    //0.838196601125 golden ratio

     6    if (netRows * 0.161803398875 < row && row < 0.838196601125 * netRows) 

     7       return smartBinaryTraverse(rootBinaryTree, row); 

     8 

     9    else if (row <= net_rows * .161803398875) {//left side of link list

    10       aux(head_rows); 

    11       while (aux->get_n_row() < row)   aux = aux->get_row_p_ptr();

    12       return main_row_record->row_Tree_Search_IN_ORDER(aux, row);

    13    }

    14    else {// rigth side of link list

    15       aux(tail_rows);      

    16       while (aux->get_n_row() > row) aux = aux->get_row_p_ptr();

    17       return main_row_record->row_Tree_Search_POST_ORDER(aux, row);

    18    }

    19 } // goto returns pointer 

    20 /***********END  go_to_row*****************/


EXSAN currently exceeds 100 000 lines of source code in C++. Essentially, it is a console-oriented spreadsheet tool built on a novel data structure that can handle large and sparsely populated matrices. Thijs van den Berg, the Managing Director of SITMO Consultancy B.V. in the Netherlands, discovered ExSan on www.wilmott.com and commented in the forum, 'ExSan wrote his own MATLAB from scratch!' At present, ExSan is already plugged into the INTERACTIVE BROKERS C++ API and can perform live market data analysis.

An improvement has been made: every ExSan Node now includes an additional pointer that can be used to point to any abstract data structure, such as a binary tree, or any other abstract data structure user-defined abstract data structure.

Some ExSan Code
other

In the future, I am envisioning using ExSan and a ChatGPT plug-in

ExSan Node


   47 
   54 ExSan_int(n_rows, m_cols, p_int_pages)   
   55 ExSan_short(n, m, p_short_pages)
   56 ExSan_char(n, m, p_char_pages)
   57 ExSan_string(n, m, p_string_pages)
   58 
   


  110 ExSan now not only holds the previously described Data Type Specifiers, 
  111 but it has another pointer to a Binary Tree, so
  113 ExSan(n,m,p_int,p_short,… , p_short, ..., p_double, *ptrTREE);
  114 *ptrTREE  is a pointer to a Binary Tree which is now part of the xsn_key
  115 
 
  
 
  143 Some print outs

Flag Counter

Comments

Popular posts from this blog

Algorithm

Perseverαnce